<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>gen_spherical_mosaic [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_tools.html">工具</a> / <a href="toc_tools_mosaicking.html">Mosaicking</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">gen_spherical_mosaic</span><span data-if="c" style="display:none;">T_gen_spherical_mosaic</span><span data-if="cpp" style="display:none;">GenSphericalMosaic</span><span data-if="dotnet" style="display:none;">GenSphericalMosaic</span><span data-if="python" style="display:none;">gen_spherical_mosaic</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">gen_spherical_mosaic</span><span data-if="c" style="display:none;">T_gen_spherical_mosaic</span><span data-if="cpp" style="display:none;">GenSphericalMosaic</span><span data-if="dotnet" style="display:none;">GenSphericalMosaic</span><span data-if="python" style="display:none;">gen_spherical_mosaic</span></code> — Create a spherical mosaic image.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>gen_spherical_mosaic</b>(<a href="#Images"><i>Images</i></a> : <a href="#MosaicImage"><i>MosaicImage</i></a> : <a href="#CameraMatrices"><i>CameraMatrices</i></a>, <a href="#RotationMatrices"><i>RotationMatrices</i></a>, <a href="#LatMin"><i>LatMin</i></a>, <a href="#LatMax"><i>LatMax</i></a>, <a href="#LongMin"><i>LongMin</i></a>, <a href="#LongMax"><i>LongMax</i></a>, <a href="#LatLongStep"><i>LatLongStep</i></a>, <a href="#StackingOrder"><i>StackingOrder</i></a>, <a href="#Interpolation"><i>Interpolation</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_gen_spherical_mosaic</b>(const Hobject <a href="#Images"><i>Images</i></a>, Hobject* <a href="#MosaicImage"><i>MosaicImage</i></a>, const Htuple <a href="#CameraMatrices"><i>CameraMatrices</i></a>, const Htuple <a href="#RotationMatrices"><i>RotationMatrices</i></a>, const Htuple <a href="#LatMin"><i>LatMin</i></a>, const Htuple <a href="#LatMax"><i>LatMax</i></a>, const Htuple <a href="#LongMin"><i>LongMin</i></a>, const Htuple <a href="#LongMax"><i>LongMax</i></a>, const Htuple <a href="#LatLongStep"><i>LatLongStep</i></a>, const Htuple <a href="#StackingOrder"><i>StackingOrder</i></a>, const Htuple <a href="#Interpolation"><i>Interpolation</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>GenSphericalMosaic</b>(const HObject&amp; <a href="#Images"><i>Images</i></a>, HObject* <a href="#MosaicImage"><i>MosaicImage</i></a>, const HTuple&amp; <a href="#CameraMatrices"><i>CameraMatrices</i></a>, const HTuple&amp; <a href="#RotationMatrices"><i>RotationMatrices</i></a>, const HTuple&amp; <a href="#LatMin"><i>LatMin</i></a>, const HTuple&amp; <a href="#LatMax"><i>LatMax</i></a>, const HTuple&amp; <a href="#LongMin"><i>LongMin</i></a>, const HTuple&amp; <a href="#LongMax"><i>LongMax</i></a>, const HTuple&amp; <a href="#LatLongStep"><i>LatLongStep</i></a>, const HTuple&amp; <a href="#StackingOrder"><i>StackingOrder</i></a>, const HTuple&amp; <a href="#Interpolation"><i>Interpolation</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>GenSphericalMosaic</b>(const HHomMat2DArray&amp; <a href="#CameraMatrices"><i>CameraMatrices</i></a>, const HHomMat2DArray&amp; <a href="#RotationMatrices"><i>RotationMatrices</i></a>, const HTuple&amp; <a href="#LatMin"><i>LatMin</i></a>, const HTuple&amp; <a href="#LatMax"><i>LatMax</i></a>, const HTuple&amp; <a href="#LongMin"><i>LongMin</i></a>, const HTuple&amp; <a href="#LongMax"><i>LongMax</i></a>, const HTuple&amp; <a href="#LatLongStep"><i>LatLongStep</i></a>, const HTuple&amp; <a href="#StackingOrder"><i>StackingOrder</i></a>, const HTuple&amp; <a href="#Interpolation"><i>Interpolation</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>GenSphericalMosaic</b>(const HHomMat2DArray&amp; <a href="#CameraMatrices"><i>CameraMatrices</i></a>, const HHomMat2DArray&amp; <a href="#RotationMatrices"><i>RotationMatrices</i></a>, double <a href="#LatMin"><i>LatMin</i></a>, double <a href="#LatMax"><i>LatMax</i></a>, double <a href="#LongMin"><i>LongMin</i></a>, double <a href="#LongMax"><i>LongMax</i></a>, double <a href="#LatLongStep"><i>LatLongStep</i></a>, const HString&amp; <a href="#StackingOrder"><i>StackingOrder</i></a>, const HString&amp; <a href="#Interpolation"><i>Interpolation</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>GenSphericalMosaic</b>(const HHomMat2DArray&amp; <a href="#CameraMatrices"><i>CameraMatrices</i></a>, const HHomMat2DArray&amp; <a href="#RotationMatrices"><i>RotationMatrices</i></a>, double <a href="#LatMin"><i>LatMin</i></a>, double <a href="#LatMax"><i>LatMax</i></a>, double <a href="#LongMin"><i>LongMin</i></a>, double <a href="#LongMax"><i>LongMax</i></a>, double <a href="#LatLongStep"><i>LatLongStep</i></a>, const char* <a href="#StackingOrder"><i>StackingOrder</i></a>, const char* <a href="#Interpolation"><i>Interpolation</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>GenSphericalMosaic</b>(const HHomMat2DArray&amp; <a href="#CameraMatrices"><i>CameraMatrices</i></a>, const HHomMat2DArray&amp; <a href="#RotationMatrices"><i>RotationMatrices</i></a>, double <a href="#LatMin"><i>LatMin</i></a>, double <a href="#LatMax"><i>LatMax</i></a>, double <a href="#LongMin"><i>LongMin</i></a>, double <a href="#LongMax"><i>LongMax</i></a>, double <a href="#LatLongStep"><i>LatLongStep</i></a>, const wchar_t* <a href="#StackingOrder"><i>StackingOrder</i></a>, const wchar_t* <a href="#Interpolation"><i>Interpolation</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>GenSphericalMosaic</b>(<a href="HObject.html">HObject</a> <a href="#Images"><i>images</i></a>, out <a href="HObject.html">HObject</a> <a href="#MosaicImage"><i>mosaicImage</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CameraMatrices"><i>cameraMatrices</i></a>, <a href="HTuple.html">HTuple</a> <a href="#RotationMatrices"><i>rotationMatrices</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LatMin"><i>latMin</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LatMax"><i>latMax</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LongMin"><i>longMin</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LongMax"><i>longMax</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LatLongStep"><i>latLongStep</i></a>, <a href="HTuple.html">HTuple</a> <a href="#StackingOrder"><i>stackingOrder</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Interpolation"><i>interpolation</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>.<b>GenSphericalMosaic</b>(<a href="HHomMat2D.html">HHomMat2D[]</a> <a href="#CameraMatrices"><i>cameraMatrices</i></a>, <a href="HHomMat2D.html">HHomMat2D[]</a> <a href="#RotationMatrices"><i>rotationMatrices</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LatMin"><i>latMin</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LatMax"><i>latMax</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LongMin"><i>longMin</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LongMax"><i>longMax</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LatLongStep"><i>latLongStep</i></a>, <a href="HTuple.html">HTuple</a> <a href="#StackingOrder"><i>stackingOrder</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Interpolation"><i>interpolation</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>.<b>GenSphericalMosaic</b>(<a href="HHomMat2D.html">HHomMat2D[]</a> <a href="#CameraMatrices"><i>cameraMatrices</i></a>, <a href="HHomMat2D.html">HHomMat2D[]</a> <a href="#RotationMatrices"><i>rotationMatrices</i></a>, double <a href="#LatMin"><i>latMin</i></a>, double <a href="#LatMax"><i>latMax</i></a>, double <a href="#LongMin"><i>longMin</i></a>, double <a href="#LongMax"><i>longMax</i></a>, double <a href="#LatLongStep"><i>latLongStep</i></a>, string <a href="#StackingOrder"><i>stackingOrder</i></a>, string <a href="#Interpolation"><i>interpolation</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>gen_spherical_mosaic</b>(<a href="#Images"><i>images</i></a>: HObject, <a href="#CameraMatrices"><i>camera_matrices</i></a>: Sequence[float], <a href="#RotationMatrices"><i>rotation_matrices</i></a>: Sequence[float], <a href="#LatMin"><i>lat_min</i></a>: Union[float, int], <a href="#LatMax"><i>lat_max</i></a>: Union[float, int], <a href="#LongMin"><i>long_min</i></a>: Union[float, int], <a href="#LongMax"><i>long_max</i></a>: Union[float, int], <a href="#LatLongStep"><i>lat_long_step</i></a>: Union[float, int], <a href="#StackingOrder"><i>stacking_order</i></a>: MaybeSequence[Union[str, int]], <a href="#Interpolation"><i>interpolation</i></a>: Union[str, int]) -&gt; HObject</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">gen_spherical_mosaic</span><span data-if="c" style="display:none">gen_spherical_mosaic</span><span data-if="cpp" style="display:none">GenSphericalMosaic</span><span data-if="com" style="display:none">GenSphericalMosaic</span><span data-if="dotnet" style="display:none">GenSphericalMosaic</span><span data-if="python" style="display:none">gen_spherical_mosaic</span></code> creates a spherical mosaic image
<a href="#MosaicImage"><i><code><span data-if="hdevelop" style="display:inline">MosaicImage</span><span data-if="c" style="display:none">MosaicImage</span><span data-if="cpp" style="display:none">MosaicImage</span><span data-if="com" style="display:none">MosaicImage</span><span data-if="dotnet" style="display:none">mosaicImage</span><span data-if="python" style="display:none">mosaic_image</span></code></i></a> from the input images passed in
<a href="#Images"><i><code><span data-if="hdevelop" style="display:inline">Images</span><span data-if="c" style="display:none">Images</span><span data-if="cpp" style="display:none">Images</span><span data-if="com" style="display:none">Images</span><span data-if="dotnet" style="display:none">images</span><span data-if="python" style="display:none">images</span></code></i></a>.  The pose of the images in space, which is used to
compute the position of the images with respect to the surface of
the sphere, can be determined with
<a href="stationary_camera_self_calibration.html"><code><span data-if="hdevelop" style="display:inline">stationary_camera_self_calibration</span><span data-if="c" style="display:none">stationary_camera_self_calibration</span><span data-if="cpp" style="display:none">StationaryCameraSelfCalibration</span><span data-if="com" style="display:none">StationaryCameraSelfCalibration</span><span data-if="dotnet" style="display:none">StationaryCameraSelfCalibration</span><span data-if="python" style="display:none">stationary_camera_self_calibration</span></code></a>.  The camera and rotation
matrices computed with <a href="stationary_camera_self_calibration.html"><code><span data-if="hdevelop" style="display:inline">stationary_camera_self_calibration</span><span data-if="c" style="display:none">stationary_camera_self_calibration</span><span data-if="cpp" style="display:none">StationaryCameraSelfCalibration</span><span data-if="com" style="display:none">StationaryCameraSelfCalibration</span><span data-if="dotnet" style="display:none">StationaryCameraSelfCalibration</span><span data-if="python" style="display:none">stationary_camera_self_calibration</span></code></a>
can be used in <a href="#CameraMatrices"><i><code><span data-if="hdevelop" style="display:inline">CameraMatrices</span><span data-if="c" style="display:none">CameraMatrices</span><span data-if="cpp" style="display:none">CameraMatrices</span><span data-if="com" style="display:none">CameraMatrices</span><span data-if="dotnet" style="display:none">cameraMatrices</span><span data-if="python" style="display:none">camera_matrices</span></code></i></a> and
<a href="#RotationMatrices"><i><code><span data-if="hdevelop" style="display:inline">RotationMatrices</span><span data-if="c" style="display:none">RotationMatrices</span><span data-if="cpp" style="display:none">RotationMatrices</span><span data-if="com" style="display:none">RotationMatrices</span><span data-if="dotnet" style="display:none">rotationMatrices</span><span data-if="python" style="display:none">rotation_matrices</span></code></i></a>.  A spherical mosaic can only be created
from images that were taken with a stationary camera (see
<a href="stationary_camera_self_calibration.html"><code><span data-if="hdevelop" style="display:inline">stationary_camera_self_calibration</span><span data-if="c" style="display:none">stationary_camera_self_calibration</span><span data-if="cpp" style="display:none">StationaryCameraSelfCalibration</span><span data-if="com" style="display:none">StationaryCameraSelfCalibration</span><span data-if="dotnet" style="display:none">StationaryCameraSelfCalibration</span><span data-if="python" style="display:none">stationary_camera_self_calibration</span></code></a>).
</p>
<p>The mosaic is computed in spherical coordinates (longitude and
latitude).  The row axis of <a href="#MosaicImage"><i><code><span data-if="hdevelop" style="display:inline">MosaicImage</span><span data-if="c" style="display:none">MosaicImage</span><span data-if="cpp" style="display:none">MosaicImage</span><span data-if="com" style="display:none">MosaicImage</span><span data-if="dotnet" style="display:none">mosaicImage</span><span data-if="python" style="display:none">mosaic_image</span></code></i></a> corresponds to the
latitude, while the column axis corresponds to the longitude.  The
part of the sphere that is computed by <code><span data-if="hdevelop" style="display:inline">gen_spherical_mosaic</span><span data-if="c" style="display:none">gen_spherical_mosaic</span><span data-if="cpp" style="display:none">GenSphericalMosaic</span><span data-if="com" style="display:none">GenSphericalMosaic</span><span data-if="dotnet" style="display:none">GenSphericalMosaic</span><span data-if="python" style="display:none">gen_spherical_mosaic</span></code>
is determined by <a href="#LatMin"><i><code><span data-if="hdevelop" style="display:inline">LatMin</span><span data-if="c" style="display:none">LatMin</span><span data-if="cpp" style="display:none">LatMin</span><span data-if="com" style="display:none">LatMin</span><span data-if="dotnet" style="display:none">latMin</span><span data-if="python" style="display:none">lat_min</span></code></i></a>, <a href="#LatMax"><i><code><span data-if="hdevelop" style="display:inline">LatMax</span><span data-if="c" style="display:none">LatMax</span><span data-if="cpp" style="display:none">LatMax</span><span data-if="com" style="display:none">LatMax</span><span data-if="dotnet" style="display:none">latMax</span><span data-if="python" style="display:none">lat_max</span></code></i></a>, <a href="#LongMin"><i><code><span data-if="hdevelop" style="display:inline">LongMin</span><span data-if="c" style="display:none">LongMin</span><span data-if="cpp" style="display:none">LongMin</span><span data-if="com" style="display:none">LongMin</span><span data-if="dotnet" style="display:none">longMin</span><span data-if="python" style="display:none">long_min</span></code></i></a>,
and <a href="#LongMax"><i><code><span data-if="hdevelop" style="display:inline">LongMax</span><span data-if="c" style="display:none">LongMax</span><span data-if="cpp" style="display:none">LongMax</span><span data-if="com" style="display:none">LongMax</span><span data-if="dotnet" style="display:none">longMax</span><span data-if="python" style="display:none">long_max</span></code></i></a>.  These parameters are specified in degrees and
determine a rectangular part of the latitude and longitude
coordinates.  The latitude <i>-90</i> corresponds to the north
pole (i.e., the straight up viewing direction), while <i>90</i>
corresponds to the south pole (i.e., the straight down viewing
direction).  The longitude <i>0</i> corresponds to the straight
ahead viewing direction.  Negative longitudes correspond to viewing
directions to the left, while positive longitudes correspond to
viewing directions to the right.  Hence, to obtain a complete image
of the sphere, <a href="#LatMin"><i><code><span data-if="hdevelop" style="display:inline">LatMin</span><span data-if="c" style="display:none">LatMin</span><span data-if="cpp" style="display:none">LatMin</span><span data-if="com" style="display:none">LatMin</span><span data-if="dotnet" style="display:none">latMin</span><span data-if="python" style="display:none">lat_min</span></code></i></a> = <i>-90</i>, <a href="#LatMax"><i><code><span data-if="hdevelop" style="display:inline">LatMax</span><span data-if="c" style="display:none">LatMax</span><span data-if="cpp" style="display:none">LatMax</span><span data-if="com" style="display:none">LatMax</span><span data-if="dotnet" style="display:none">latMax</span><span data-if="python" style="display:none">lat_max</span></code></i></a> =
<i>90</i>, <a href="#LongMin"><i><code><span data-if="hdevelop" style="display:inline">LongMin</span><span data-if="c" style="display:none">LongMin</span><span data-if="cpp" style="display:none">LongMin</span><span data-if="com" style="display:none">LongMin</span><span data-if="dotnet" style="display:none">longMin</span><span data-if="python" style="display:none">long_min</span></code></i></a> = <i>-180</i>, and
<a href="#LongMax"><i><code><span data-if="hdevelop" style="display:inline">LongMax</span><span data-if="c" style="display:none">LongMax</span><span data-if="cpp" style="display:none">LongMax</span><span data-if="com" style="display:none">LongMax</span><span data-if="dotnet" style="display:none">longMax</span><span data-if="python" style="display:none">long_max</span></code></i></a> = <i>180</i> must be used.  In many cases, the
mosaic will not cover the entire sphere.  In these cases, it is
useful to select the desired part of the sphere with the above
parameters.  This can be done by explicitly specifying the desired
rectangle.  However, often it is desirable to determine the smallest
rectangle that encloses all images automatically.  This can be done
by using <a href="#LatMin"><i><code><span data-if="hdevelop" style="display:inline">LatMin</span><span data-if="c" style="display:none">LatMin</span><span data-if="cpp" style="display:none">LatMin</span><span data-if="com" style="display:none">LatMin</span><span data-if="dotnet" style="display:none">latMin</span><span data-if="python" style="display:none">lat_min</span></code></i></a> &lt; <i>-90</i>, <a href="#LatMax"><i><code><span data-if="hdevelop" style="display:inline">LatMax</span><span data-if="c" style="display:none">LatMax</span><span data-if="cpp" style="display:none">LatMax</span><span data-if="com" style="display:none">LatMax</span><span data-if="dotnet" style="display:none">latMax</span><span data-if="python" style="display:none">lat_max</span></code></i></a> &gt;
<i>90</i>, <a href="#LongMin"><i><code><span data-if="hdevelop" style="display:inline">LongMin</span><span data-if="c" style="display:none">LongMin</span><span data-if="cpp" style="display:none">LongMin</span><span data-if="com" style="display:none">LongMin</span><span data-if="dotnet" style="display:none">longMin</span><span data-if="python" style="display:none">long_min</span></code></i></a> &lt; <i>-180</i>, and
<a href="#LongMax"><i><code><span data-if="hdevelop" style="display:inline">LongMax</span><span data-if="c" style="display:none">LongMax</span><span data-if="cpp" style="display:none">LongMax</span><span data-if="com" style="display:none">LongMax</span><span data-if="dotnet" style="display:none">longMax</span><span data-if="python" style="display:none">long_max</span></code></i></a> &gt; <i>180</i>.  Only the parameters that lie
outside the normal range of values are determined automatically.
</p>
<p>The angle step per pixel in <a href="#MosaicImage"><i><code><span data-if="hdevelop" style="display:inline">MosaicImage</span><span data-if="c" style="display:none">MosaicImage</span><span data-if="cpp" style="display:none">MosaicImage</span><span data-if="com" style="display:none">MosaicImage</span><span data-if="dotnet" style="display:none">mosaicImage</span><span data-if="python" style="display:none">mosaic_image</span></code></i></a> can be selected
with <a href="#LatLongStep"><i><code><span data-if="hdevelop" style="display:inline">LatLongStep</span><span data-if="c" style="display:none">LatLongStep</span><span data-if="cpp" style="display:none">LatLongStep</span><span data-if="com" style="display:none">LatLongStep</span><span data-if="dotnet" style="display:none">latLongStep</span><span data-if="python" style="display:none">lat_long_step</span></code></i></a>, which also is an angle specified in
degrees.  With this, the resolution of the mosaic image can be
controlled.  If <a href="#LatLongStep"><i><code><span data-if="hdevelop" style="display:inline">LatLongStep</span><span data-if="c" style="display:none">LatLongStep</span><span data-if="cpp" style="display:none">LatLongStep</span><span data-if="com" style="display:none">LatLongStep</span><span data-if="dotnet" style="display:none">latLongStep</span><span data-if="python" style="display:none">lat_long_step</span></code></i></a> is set to <i>0</i> the angle
step is calculated automatically by trying to preserve the pixel
size of the original images as well as possible.
</p>
<p>The mode in which the images are added to the mosaic is given by
<a href="#StackingOrder"><i><code><span data-if="hdevelop" style="display:inline">StackingOrder</span><span data-if="c" style="display:none">StackingOrder</span><span data-if="cpp" style="display:none">StackingOrder</span><span data-if="com" style="display:none">StackingOrder</span><span data-if="dotnet" style="display:none">stackingOrder</span><span data-if="python" style="display:none">stacking_order</span></code></i></a>.  For <a href="#StackingOrder"><i><code><span data-if="hdevelop" style="display:inline">StackingOrder</span><span data-if="c" style="display:none">StackingOrder</span><span data-if="cpp" style="display:none">StackingOrder</span><span data-if="com" style="display:none">StackingOrder</span><span data-if="dotnet" style="display:none">stackingOrder</span><span data-if="python" style="display:none">stacking_order</span></code></i></a> =
<i><span data-if="hdevelop" style="display:inline">'voronoi'</span><span data-if="c" style="display:none">"voronoi"</span><span data-if="cpp" style="display:none">"voronoi"</span><span data-if="com" style="display:none">"voronoi"</span><span data-if="dotnet" style="display:none">"voronoi"</span><span data-if="python" style="display:none">"voronoi"</span></i>, the points in the mosaic image are determined
from the Voronoi cell of the respective input image.  This means
that the gray values are taken from the points of the input image to
whose center the pixel in the mosaic image has the smallest distance
on the sphere.  This mode has the advantage that vignetting and
uncorrected radial distortions are less noticeable in the mosaic
image because they typically are symmetric with respect to the image
center.  Alternatively, with the choice of parameters described
described in the following, a mode can be selected that has the same
effect as if the images were painted successively into the mosaic
image.  Here, the order in which the images are added to the mosaic
image is important.  Therefore, an array of integer values can be
passed in <a href="#StackingOrder"><i><code><span data-if="hdevelop" style="display:inline">StackingOrder</span><span data-if="c" style="display:none">StackingOrder</span><span data-if="cpp" style="display:none">StackingOrder</span><span data-if="com" style="display:none">StackingOrder</span><span data-if="dotnet" style="display:none">stackingOrder</span><span data-if="python" style="display:none">stacking_order</span></code></i></a>.  The first index in this array
will end up at the bottom of the image stack while the last one will
be on top.  If <i><span data-if="hdevelop" style="display:inline">'default'</span><span data-if="c" style="display:none">"default"</span><span data-if="cpp" style="display:none">"default"</span><span data-if="com" style="display:none">"default"</span><span data-if="dotnet" style="display:none">"default"</span><span data-if="python" style="display:none">"default"</span></i> is given instead of an array of
integers, the canonical order (images in the order used in
<a href="#Images"><i><code><span data-if="hdevelop" style="display:inline">Images</span><span data-if="c" style="display:none">Images</span><span data-if="cpp" style="display:none">Images</span><span data-if="com" style="display:none">Images</span><span data-if="dotnet" style="display:none">images</span><span data-if="python" style="display:none">images</span></code></i></a>) will be used.  Hence, if neither <i><span data-if="hdevelop" style="display:inline">'voronoi'</span><span data-if="c" style="display:none">"voronoi"</span><span data-if="cpp" style="display:none">"voronoi"</span><span data-if="com" style="display:none">"voronoi"</span><span data-if="dotnet" style="display:none">"voronoi"</span><span data-if="python" style="display:none">"voronoi"</span></i>
nor <i><span data-if="hdevelop" style="display:inline">'default'</span><span data-if="c" style="display:none">"default"</span><span data-if="cpp" style="display:none">"default"</span><span data-if="com" style="display:none">"default"</span><span data-if="dotnet" style="display:none">"default"</span><span data-if="python" style="display:none">"default"</span></i> are used, <a href="#StackingOrder"><i><code><span data-if="hdevelop" style="display:inline">StackingOrder</span><span data-if="c" style="display:none">StackingOrder</span><span data-if="cpp" style="display:none">StackingOrder</span><span data-if="com" style="display:none">StackingOrder</span><span data-if="dotnet" style="display:none">stackingOrder</span><span data-if="python" style="display:none">stacking_order</span></code></i></a> must contain
a permutation of the numbers 1,...,n, where n is the number of
images passed in <a href="#Images"><i><code><span data-if="hdevelop" style="display:inline">Images</span><span data-if="c" style="display:none">Images</span><span data-if="cpp" style="display:none">Images</span><span data-if="com" style="display:none">Images</span><span data-if="dotnet" style="display:none">images</span><span data-if="python" style="display:none">images</span></code></i></a>.  It should be noted that the mode
<i><span data-if="hdevelop" style="display:inline">'voronoi'</span><span data-if="c" style="display:none">"voronoi"</span><span data-if="cpp" style="display:none">"voronoi"</span><span data-if="com" style="display:none">"voronoi"</span><span data-if="dotnet" style="display:none">"voronoi"</span><span data-if="python" style="display:none">"voronoi"</span></i> cannot always be used.  For example, at least
two images must be passed to use this mode.  Furthermore, for very
special configurations of the positions of the image centers on the
sphere, the Voronoi cells cannot be determined uniquely.  With
<a href="#StackingOrder"><i><code><span data-if="hdevelop" style="display:inline">StackingOrder</span><span data-if="c" style="display:none">StackingOrder</span><span data-if="cpp" style="display:none">StackingOrder</span><span data-if="com" style="display:none">StackingOrder</span><span data-if="dotnet" style="display:none">stackingOrder</span><span data-if="python" style="display:none">stacking_order</span></code></i></a> = <i><span data-if="hdevelop" style="display:inline">'blend'</span><span data-if="c" style="display:none">"blend"</span><span data-if="cpp" style="display:none">"blend"</span><span data-if="com" style="display:none">"blend"</span><span data-if="dotnet" style="display:none">"blend"</span><span data-if="python" style="display:none">"blend"</span></i>, an additional mode is
available, which blends the images of the mosaic smoothly.  This way seams
between the images become less apparent.  The seam lines between the images
are the same as in <i><span data-if="hdevelop" style="display:inline">'voronoi'</span><span data-if="c" style="display:none">"voronoi"</span><span data-if="cpp" style="display:none">"voronoi"</span><span data-if="com" style="display:none">"voronoi"</span><span data-if="dotnet" style="display:none">"voronoi"</span><span data-if="python" style="display:none">"voronoi"</span></i>. This mode leads to visually more
appealing images, but requires significantly more resources.  If the
mode <i><span data-if="hdevelop" style="display:inline">'voronoi'</span><span data-if="c" style="display:none">"voronoi"</span><span data-if="cpp" style="display:none">"voronoi"</span><span data-if="com" style="display:none">"voronoi"</span><span data-if="dotnet" style="display:none">"voronoi"</span><span data-if="python" style="display:none">"voronoi"</span></i> or <i><span data-if="hdevelop" style="display:inline">'blend'</span><span data-if="c" style="display:none">"blend"</span><span data-if="cpp" style="display:none">"blend"</span><span data-if="com" style="display:none">"blend"</span><span data-if="dotnet" style="display:none">"blend"</span><span data-if="python" style="display:none">"blend"</span></i> cannot be used for whatever
reason the mode is switched internally to <i><span data-if="hdevelop" style="display:inline">'default'</span><span data-if="c" style="display:none">"default"</span><span data-if="cpp" style="display:none">"default"</span><span data-if="com" style="display:none">"default"</span><span data-if="dotnet" style="display:none">"default"</span><span data-if="python" style="display:none">"default"</span></i> automatically.
</p>
<p>The parameter <a href="#Interpolation"><i><code><span data-if="hdevelop" style="display:inline">Interpolation</span><span data-if="c" style="display:none">Interpolation</span><span data-if="cpp" style="display:none">Interpolation</span><span data-if="com" style="display:none">Interpolation</span><span data-if="dotnet" style="display:none">interpolation</span><span data-if="python" style="display:none">interpolation</span></code></i></a> selects the desired interpolation mode
for creating the mosaic.  <i><span data-if="hdevelop" style="display:inline">'bilinear'</span><span data-if="c" style="display:none">"bilinear"</span><span data-if="cpp" style="display:none">"bilinear"</span><span data-if="com" style="display:none">"bilinear"</span><span data-if="dotnet" style="display:none">"bilinear"</span><span data-if="python" style="display:none">"bilinear"</span></i> and <i><span data-if="hdevelop" style="display:inline">'bicubic'</span><span data-if="c" style="display:none">"bicubic"</span><span data-if="cpp" style="display:none">"bicubic"</span><span data-if="com" style="display:none">"bicubic"</span><span data-if="dotnet" style="display:none">"bicubic"</span><span data-if="python" style="display:none">"bicubic"</span></i>
interpolation is available for all modes of <a href="#StackingOrder"><i><code><span data-if="hdevelop" style="display:inline">StackingOrder</span><span data-if="c" style="display:none">StackingOrder</span><span data-if="cpp" style="display:none">StackingOrder</span><span data-if="com" style="display:none">StackingOrder</span><span data-if="dotnet" style="display:none">stackingOrder</span><span data-if="python" style="display:none">stacking_order</span></code></i></a>.
<i><span data-if="hdevelop" style="display:inline">'nearest_neighbor'</span><span data-if="c" style="display:none">"nearest_neighbor"</span><span data-if="cpp" style="display:none">"nearest_neighbor"</span><span data-if="com" style="display:none">"nearest_neighbor"</span><span data-if="dotnet" style="display:none">"nearest_neighbor"</span><span data-if="python" style="display:none">"nearest_neighbor"</span></i> is only available if <a href="#StackingOrder"><i><code><span data-if="hdevelop" style="display:inline">StackingOrder</span><span data-if="c" style="display:none">StackingOrder</span><span data-if="cpp" style="display:none">StackingOrder</span><span data-if="com" style="display:none">StackingOrder</span><span data-if="dotnet" style="display:none">stackingOrder</span><span data-if="python" style="display:none">stacking_order</span></code></i></a> is
set to <i><span data-if="hdevelop" style="display:inline">'default'</span><span data-if="c" style="display:none">"default"</span><span data-if="cpp" style="display:none">"default"</span><span data-if="com" style="display:none">"default"</span><span data-if="dotnet" style="display:none">"default"</span><span data-if="python" style="display:none">"default"</span></i> or <i><span data-if="hdevelop" style="display:inline">'voronoi'</span><span data-if="c" style="display:none">"voronoi"</span><span data-if="cpp" style="display:none">"voronoi"</span><span data-if="com" style="display:none">"voronoi"</span><span data-if="dotnet" style="display:none">"voronoi"</span><span data-if="python" style="display:none">"voronoi"</span></i>.</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Images" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Images</span><span data-if="c" style="display:none">Images</span><span data-if="cpp" style="display:none">Images</span><span data-if="com" style="display:none">Images</span><span data-if="dotnet" style="display:none">images</span><span data-if="python" style="display:none">images</span></code></b> (input_object)  </span><span>(multichannel-)image-array <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte / uint2 / real)</span>
</div>
<p class="pardesc">Input images.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="MosaicImage" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MosaicImage</span><span data-if="c" style="display:none">MosaicImage</span><span data-if="cpp" style="display:none">MosaicImage</span><span data-if="com" style="display:none">MosaicImage</span><span data-if="dotnet" style="display:none">mosaicImage</span><span data-if="python" style="display:none">mosaic_image</span></code></b> (output_object)  </span><span>(multichannel-)image <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject *</span> (byte / uint2 / real)</span>
</div>
<p class="pardesc">Output image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CameraMatrices" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CameraMatrices</span><span data-if="c" style="display:none">CameraMatrices</span><span data-if="cpp" style="display:none">CameraMatrices</span><span data-if="com" style="display:none">CameraMatrices</span><span data-if="dotnet" style="display:none">cameraMatrices</span><span data-if="python" style="display:none">camera_matrices</span></code></b> (input_control)  </span><span>hom_mat2d-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HHomMat2D.html">HHomMat2D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">(Array of) 3x3 projective
camera matrices that determine the internal
camera parameters.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="RotationMatrices" class="parname"><b><code><span data-if="hdevelop" style="display:inline">RotationMatrices</span><span data-if="c" style="display:none">RotationMatrices</span><span data-if="cpp" style="display:none">RotationMatrices</span><span data-if="com" style="display:none">RotationMatrices</span><span data-if="dotnet" style="display:none">rotationMatrices</span><span data-if="python" style="display:none">rotation_matrices</span></code></b> (input_control)  </span><span>hom_mat2d-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HHomMat2D.html">HHomMat2D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Array of 3x3
transformation matrices that determine
rotation of the camera in the respective
image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="LatMin" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LatMin</span><span data-if="c" style="display:none">LatMin</span><span data-if="cpp" style="display:none">LatMin</span><span data-if="com" style="display:none">LatMin</span><span data-if="dotnet" style="display:none">latMin</span><span data-if="python" style="display:none">lat_min</span></code></b> (input_control)  </span><span>angle.deg <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Minimum latitude of points in the spherical
mosaic image.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>-90</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>-100, -90, -80, -70, -60, -50, -40, -30, -20, -10</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>LatMin &lt;= 90</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="LatMax" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LatMax</span><span data-if="c" style="display:none">LatMax</span><span data-if="cpp" style="display:none">LatMax</span><span data-if="com" style="display:none">LatMax</span><span data-if="dotnet" style="display:none">latMax</span><span data-if="python" style="display:none">lat_max</span></code></b> (input_control)  </span><span>angle.deg <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Maximum latitude of points in the spherical
mosaic image.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>90</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>10, 20, 30, 40, 50, 60, 70, 80, 90, 100</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>LatMax &gt;= -90 &amp;&amp; LatMax &gt; LatMin</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="LongMin" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LongMin</span><span data-if="c" style="display:none">LongMin</span><span data-if="cpp" style="display:none">LongMin</span><span data-if="com" style="display:none">LongMin</span><span data-if="dotnet" style="display:none">longMin</span><span data-if="python" style="display:none">long_min</span></code></b> (input_control)  </span><span>angle.deg <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Minimum longitude of points in the spherical
mosaic image.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>-180</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>-200, -180, -160, -140, -120, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>LongMin &lt;= 180</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="LongMax" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LongMax</span><span data-if="c" style="display:none">LongMax</span><span data-if="cpp" style="display:none">LongMax</span><span data-if="com" style="display:none">LongMax</span><span data-if="dotnet" style="display:none">longMax</span><span data-if="python" style="display:none">long_max</span></code></b> (input_control)  </span><span>angle.deg <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Maximum longitude of points in the spherical
mosaic image.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>180</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 160, 180, 200</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>LongMax &gt;= -90 &amp;&amp; LongMax &gt; LongMin</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="LatLongStep" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LatLongStep</span><span data-if="c" style="display:none">LatLongStep</span><span data-if="cpp" style="display:none">LatLongStep</span><span data-if="com" style="display:none">LatLongStep</span><span data-if="dotnet" style="display:none">latLongStep</span><span data-if="python" style="display:none">lat_long_step</span></code></b> (input_control)  </span><span>angle.deg <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Latitude and longitude angle step width.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0.1</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0, 0.02, 0.05, 0.1, 0.2, 0.5, 1</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>LatLongStep &gt;= 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="StackingOrder" class="parname"><b><code><span data-if="hdevelop" style="display:inline">StackingOrder</span><span data-if="c" style="display:none">StackingOrder</span><span data-if="cpp" style="display:none">StackingOrder</span><span data-if="com" style="display:none">StackingOrder</span><span data-if="dotnet" style="display:none">stackingOrder</span><span data-if="python" style="display:none">stacking_order</span></code></b> (input_control)  </span><span>string(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[Union[str, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>string</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>HString</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>char*</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Mode of adding the images to the mosaic image.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'voronoi'</span>
    <span data-if="c" style="display:none">"voronoi"</span>
    <span data-if="cpp" style="display:none">"voronoi"</span>
    <span data-if="com" style="display:none">"voronoi"</span>
    <span data-if="dotnet" style="display:none">"voronoi"</span>
    <span data-if="python" style="display:none">"voronoi"</span>
</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span><span data-if="hdevelop" style="display:inline">'blend'</span><span data-if="c" style="display:none">"blend"</span><span data-if="cpp" style="display:none">"blend"</span><span data-if="com" style="display:none">"blend"</span><span data-if="dotnet" style="display:none">"blend"</span><span data-if="python" style="display:none">"blend"</span>, <span data-if="hdevelop" style="display:inline">'voronoi'</span><span data-if="c" style="display:none">"voronoi"</span><span data-if="cpp" style="display:none">"voronoi"</span><span data-if="com" style="display:none">"voronoi"</span><span data-if="dotnet" style="display:none">"voronoi"</span><span data-if="python" style="display:none">"voronoi"</span>, <span data-if="hdevelop" style="display:inline">'default'</span><span data-if="c" style="display:none">"default"</span><span data-if="cpp" style="display:none">"default"</span><span data-if="com" style="display:none">"default"</span><span data-if="dotnet" style="display:none">"default"</span><span data-if="python" style="display:none">"default"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="Interpolation" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Interpolation</span><span data-if="c" style="display:none">Interpolation</span><span data-if="cpp" style="display:none">Interpolation</span><span data-if="com" style="display:none">Interpolation</span><span data-if="dotnet" style="display:none">interpolation</span><span data-if="python" style="display:none">interpolation</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[str, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>string</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>HString</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>char*</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Mode of interpolation when creating the mosaic image.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'bilinear'</span>
    <span data-if="c" style="display:none">"bilinear"</span>
    <span data-if="cpp" style="display:none">"bilinear"</span>
    <span data-if="com" style="display:none">"bilinear"</span>
    <span data-if="dotnet" style="display:none">"bilinear"</span>
    <span data-if="python" style="display:none">"bilinear"</span>
</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span><span data-if="hdevelop" style="display:inline">'nearest_neighbor'</span><span data-if="c" style="display:none">"nearest_neighbor"</span><span data-if="cpp" style="display:none">"nearest_neighbor"</span><span data-if="com" style="display:none">"nearest_neighbor"</span><span data-if="dotnet" style="display:none">"nearest_neighbor"</span><span data-if="python" style="display:none">"nearest_neighbor"</span>, <span data-if="hdevelop" style="display:inline">'bilinear'</span><span data-if="c" style="display:none">"bilinear"</span><span data-if="cpp" style="display:none">"bilinear"</span><span data-if="com" style="display:none">"bilinear"</span><span data-if="dotnet" style="display:none">"bilinear"</span><span data-if="python" style="display:none">"bilinear"</span>, <span data-if="hdevelop" style="display:inline">'bicubic'</span><span data-if="c" style="display:none">"bicubic"</span><span data-if="cpp" style="display:none">"bicubic"</span><span data-if="com" style="display:none">"bicubic"</span><span data-if="dotnet" style="display:none">"bicubic"</span><span data-if="python" style="display:none">"bicubic"</span></p>
</div>
<h2 id="sec_example_all">例程 (HDevelop)</h2>
<pre class="example">
* For the input data to stationary_camera_self_calibration, please
* refer to the example for stationary_camera_self_calibration.
stationary_camera_self_calibration (4, 640, 480, 1, From, To, \
                                    HomMatrices2D, Rows1, Cols1, \
                                    Rows2, Cols2, NumMatches, \
                                    'gold_standard', \
                                    ['focus','principal_point'], \
                                    'true', CameraMatrix, Kappa, \
                                    RotationMatrices, X, Y, Z, Error)
gen_spherical_mosaic (Images, MosaicImage, CameraMatrix, \
                      RotationMatrices, -100, 100, -200, 200, 0, \
                      'default','bilinear')

* Alternatively, if kappa should be determined, the following calls
* can be made:
stationary_camera_self_calibration (4, 640, 480, 1, From, To, \
                                    HomMatrices2D, Rows1, Cols1, \
                                    Rows2, Cols2, NumMatches, \
                                    'gold_standard', \
                                    ['focus','principal_point','kappa'], \
                                    'true', CameraMatrix, Kappa, \
                                    RotationMatrices, X, Y, Z, Error)
cam_mat_to_cam_par (CameraMatrix, Kappa, 640, 480, CamParam)
change_radial_distortion_cam_par ('fixed', CamParam, 0, CamParOut)
gen_radial_distortion_map (Map, CamParam, CamParOut, 'bilinear')
map_image (Images, Map, ImagesRect)
gen_spherical_mosaic (ImagesRect, MosaicImage, CameraMatrix, \
                      RotationMatrices, -100, 100, -200, 200, 0, \
                      'default','bilinear')
</pre>
<h2 id="sec_result">结果</h2>
<p>如果参数均有效，算子
<code><span data-if="hdevelop" style="display:inline">gen_spherical_mosaic</span><span data-if="c" style="display:none">gen_spherical_mosaic</span><span data-if="cpp" style="display:none">GenSphericalMosaic</span><span data-if="com" style="display:none">GenSphericalMosaic</span><span data-if="dotnet" style="display:none">GenSphericalMosaic</span><span data-if="python" style="display:none">gen_spherical_mosaic</span></code> 返回值 <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    .  If necessary
an exception is raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="stationary_camera_self_calibration.html"><span data-if="hdevelop" style="display:inline">stationary_camera_self_calibration</span><span data-if="c" style="display:none">stationary_camera_self_calibration</span><span data-if="cpp" style="display:none">StationaryCameraSelfCalibration</span><span data-if="com" style="display:none">StationaryCameraSelfCalibration</span><span data-if="dotnet" style="display:none">StationaryCameraSelfCalibration</span><span data-if="python" style="display:none">stationary_camera_self_calibration</span></a></code>
</p>
<h2 id="sec_alternatives">可替代算子</h2>
<p>
<code><a href="gen_cube_map_mosaic.html"><span data-if="hdevelop" style="display:inline">gen_cube_map_mosaic</span><span data-if="c" style="display:none">gen_cube_map_mosaic</span><span data-if="cpp" style="display:none">GenCubeMapMosaic</span><span data-if="com" style="display:none">GenCubeMapMosaic</span><span data-if="dotnet" style="display:none">GenCubeMapMosaic</span><span data-if="python" style="display:none">gen_cube_map_mosaic</span></a></code>, 
<code><a href="gen_projective_mosaic.html"><span data-if="hdevelop" style="display:inline">gen_projective_mosaic</span><span data-if="c" style="display:none">gen_projective_mosaic</span><span data-if="cpp" style="display:none">GenProjectiveMosaic</span><span data-if="com" style="display:none">GenProjectiveMosaic</span><span data-if="dotnet" style="display:none">GenProjectiveMosaic</span><span data-if="python" style="display:none">gen_projective_mosaic</span></a></code>
</p>
<h2 id="sec_references">References</h2>
<p>

Lourdes Agapito, E. Hayman, I. Reid: “Self-Calibration of Rotating
and Zooming Cameras”; International Journal of Computer Vision;
vol. 45, no. 2; pp. 107--127; 2001.
<br>
Olivier Faugeras, Quang-Tuan Luong: “The Geometry of Multiple
Images: The Laws That Govern the Formation of Multiple Images of a
Scene and Some of Their Applications”; MIT Press, Cambridge, MA;
2001.
</p>
<h2 id="sec_module">模块</h2>
<p>
Matching</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
